package features.advance.jdk.thread;

/**
 * @author LIN
 * @date 2022-03-18 13:47
 */
public class JoinTest {

    public static void main(String[] args) {
        Thread t1 = new Thread("t1"){
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"开始执行");
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"执行结束");
            }
        };
        Thread t2 = new Thread("t2"){
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"开始执行");
                try {
                    // 处于运行状态中的线程由于某种原因，
                    // 暂时放弃对CPU的使用权，停止执行，
                    // 此时进入阻塞状态，直到其进入到就绪状态，
                    // 才有机会再次被CPU调用以进入到运行状态
                    t1.join();
                    // 等待t1线程结束之后，才恢复可运行状态
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"执行结束");
            }
        };

        t1.start();
        t2.start();
    }

}
